Generated by Cython 3.0.2
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: _le_interpolation_catmull_rom.c
+001: # cython: infer_types=True, wraparound=False, nonecheck=False, boundscheck=False, cdivision=True, language_level=3, profile=False, autogen_pxd=False
__pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
002:
+003: import numpy as np
__pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_7) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
004:
005: cimport numpy as np
006:
007: from cython.parallel import parallel, prange
008:
009: from libc.math cimport cos, sin
010:
+011: from .__interpolation_tools__ import check_image, value2array
__pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_check_image); __Pyx_GIVEREF(__pyx_n_s_check_image); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_check_image)) __PYX_ERR(0, 11, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_value2array); __Pyx_GIVEREF(__pyx_n_s_value2array); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_value2array)) __PYX_ERR(0, 11, __pyx_L1_error); __pyx_t_4 = __Pyx_Import(__pyx_n_s_interpolation_tools, __pyx_t_7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_check_image); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_image, __pyx_t_7) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_value2array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_value2array, __pyx_t_7) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+012: from .__liquid_engine__ import LiquidEngine
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_LiquidEngine); __Pyx_GIVEREF(__pyx_n_s_LiquidEngine); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_LiquidEngine)) __PYX_ERR(0, 12, __pyx_L1_error); __pyx_t_7 = __Pyx_Import(__pyx_n_s_liquid_engine, __pyx_t_4, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_LiquidEngine); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_LiquidEngine, __pyx_t_4) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+013: from .__opencl__ import cl, cl_array
__pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_cl); __Pyx_GIVEREF(__pyx_n_s_cl); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_cl)) __PYX_ERR(0, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_cl_array); __Pyx_GIVEREF(__pyx_n_s_cl_array); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_cl_array)) __PYX_ERR(0, 13, __pyx_L1_error); __pyx_t_4 = __Pyx_Import(__pyx_n_s_opencl_2, __pyx_t_7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_cl); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl, __pyx_t_7) < 0) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl_array, __pyx_t_7) < 0) __PYX_ERR(0, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
014:
+015: from ._le_interpolation_catmull_rom_ import \
__pyx_t_7 = __Pyx_Import(__pyx_n_s_le_interpolation_catmull_rom, __pyx_t_4, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_njit_shift_magnify_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_njit_shift_magnify, __pyx_t_4) < 0) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+016: njit_shift_magnify as _njit_shift_magnify
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_njit_shift_magnify_2); __Pyx_GIVEREF(__pyx_n_s_njit_shift_magnify_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_njit_shift_magnify_2)) __PYX_ERR(0, 16, __pyx_L1_error);
+017: from ._le_interpolation_catmull_rom_ import \
__pyx_t_4 = __Pyx_Import(__pyx_n_s_le_interpolation_catmull_rom, __pyx_t_7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_shift_magnify); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_py_shift_magnify, __pyx_t_7) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+018: shift_magnify as _py_shift_magnify
__pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_shift_magnify); __Pyx_GIVEREF(__pyx_n_s_shift_magnify); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_shift_magnify)) __PYX_ERR(0, 18, __pyx_L1_error);
019:
020: cdef extern from "_c_interpolation_catmull_rom.h":
021: float _c_interpolate(float *image, float row, float col, int rows, int cols) nogil
022:
023:
+024: class ShiftAndMagnify(LiquidEngine):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LiquidEngine); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_4, __pyx_n_s_ShiftAndMagnify, __pyx_n_s_ShiftAndMagnify, (PyObject *) NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_kp_s_Shift_and_Magnify_using_the_Nan); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_4 != __pyx_t_7) { if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_7) < 0))) __PYX_ERR(0, 24, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_11 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_ShiftAndMagnify, __pyx_t_4, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__Pyx_CyFunction_InitClassCell(__pyx_t_7, __pyx_t_11) < 0) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_ShiftAndMagnify, __pyx_t_11) < 0) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
025: """
026: Shift and Magnify using the NanoPyx Liquid Engine
027: """
028:
+029: def __init__(self, clear_benchmarks=False, testing=False):
/* Python wrapper */
static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_clear_benchmarks = 0;
PyObject *__pyx_v_testing = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 29, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_clear_benchmarks,&__pyx_n_s_testing,0};
PyObject* values[3] = {0,0,0};
values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_clear_benchmarks);
if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_testing);
if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 29, __pyx_L3_error)
}
} else {
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
__pyx_v_clear_benchmarks = values[1];
__pyx_v_testing = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 29, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify___init__(__pyx_self, __pyx_v_self, __pyx_v_clear_benchmarks, __pyx_v_testing);
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_clear_benchmarks, PyObject *__pyx_v_testing) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_clear_benchmarks, __pyx_n_s_testing); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 29, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__23);
__Pyx_GIVEREF(__pyx_tuple__23);
__pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_init, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 29, __pyx_L1_error)
/* … */
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_1__init__, 0, __pyx_n_s_ShiftAndMagnify___init, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 29, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_t_10);
PyList_Append(__pyx_t_7, __pyx_t_10);
__Pyx_GIVEREF(__pyx_t_10);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__25);
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_init, __pyx_t_10) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_tuple__25 = PyTuple_Pack(2, ((PyObject *)Py_False), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 29, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__25);
__Pyx_GIVEREF(__pyx_tuple__25);
+030: self._designation = "ShiftMagnify_CR"
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_designation, __pyx_n_u_ShiftMagnify_CR) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
+031: super().__init__(clear_benchmarks=clear_benchmarks, testing=testing,
__pyx_t_1 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_1) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 31, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self)) __PYX_ERR(0, 31, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_clear_benchmarks, __pyx_v_clear_benchmarks) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_testing, __pyx_v_testing) < 0) __PYX_ERR(0, 31, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+032: opencl_=True, unthreaded_=True, threaded_=True, threaded_static_=True,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_opencl, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_unthreaded, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_static, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error)
+033: threaded_dynamic_=True, threaded_guided_=True, python_=True, njit_=True)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_dynamic, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_guided, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_python, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_njit, Py_True) < 0) __PYX_ERR(0, 31, __pyx_L1_error)
034:
+035: self._default_benchmarks = {'Numba': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.1870073339996452, 0.043537417000152345, 0.043714207999983046], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.3215678749993458, 0.3253799590002018, 0.32294445800016547]}, 'OpenCL': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.02356370799952856, 0.016226208000261977, 0.015988750000360596], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.0370106250002209, 0.045146042000851594, 0.04553649999979825]}, 'Python': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 63.37451237500045, 63.10504716699961, 63.11900620799952], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 569.1941062080004, 567.8427670000001, 568.8268513340008]}, 'Threaded': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.04279016700002103, 0.04217579200030741, 0.04144937499950174], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.3156377909999719, 0.3050229999998919, 0.30736125000021275]}, 'Threaded_dynamic': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.036927834000380244, 0.037345290999837744, 0.036939124999662454], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.23315270799957943, 0.23548262500025885, 0.23372695799935173]}, 'Threaded_guided': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.03418854200026544, 0.03363912500026345, 0.0336961249995511], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.24899391600047238, 0.26036370800011355, 0.24373120899963396]}, 'Threaded_static': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.0424661670003843, 0.04156329099987488, 0.04186825000033423], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.31180666700038273, 0.30542558300021483, 0.30452662500010774]}, 'Unthreaded': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [40000000000.0, 0.10576324999965436, 0.1028390829997079, 0.10284191600021586], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)'], {})": [360000000000.0, 0.9415007090001382, 0.9382833330000722, 0.938642749999417]}}
__pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_1870073339996452); __Pyx_GIVEREF(__pyx_float_0_1870073339996452); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_1870073339996452)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_043537417000152345); __Pyx_GIVEREF(__pyx_float_0_043537417000152345); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_043537417000152345)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_043714207999983046); __Pyx_GIVEREF(__pyx_float_0_043714207999983046); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_043714207999983046)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_3215678749993458); __Pyx_GIVEREF(__pyx_float_0_3215678749993458); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_3215678749993458)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_3253799590002018); __Pyx_GIVEREF(__pyx_float_0_3253799590002018); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_3253799590002018)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_32294445800016547); __Pyx_GIVEREF(__pyx_float_0_32294445800016547); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_32294445800016547)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Numba, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_02356370799952856); __Pyx_GIVEREF(__pyx_float_0_02356370799952856); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_02356370799952856)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_016226208000261977); __Pyx_GIVEREF(__pyx_float_0_016226208000261977); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_016226208000261977)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_015988750000360596); __Pyx_GIVEREF(__pyx_float_0_015988750000360596); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_015988750000360596)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0370106250002209); __Pyx_GIVEREF(__pyx_float_0_0370106250002209); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0370106250002209)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_045146042000851594); __Pyx_GIVEREF(__pyx_float_0_045146042000851594); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_045146042000851594)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04553649999979825); __Pyx_GIVEREF(__pyx_float_0_04553649999979825); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_04553649999979825)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_OpenCL, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_63_37451237500045); __Pyx_GIVEREF(__pyx_float_63_37451237500045); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_63_37451237500045)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_63_10504716699961); __Pyx_GIVEREF(__pyx_float_63_10504716699961); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_63_10504716699961)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_63_11900620799952); __Pyx_GIVEREF(__pyx_float_63_11900620799952); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_63_11900620799952)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_569_1941062080004); __Pyx_GIVEREF(__pyx_float_569_1941062080004); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_569_1941062080004)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_567_8427670000001); __Pyx_GIVEREF(__pyx_float_567_8427670000001); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_567_8427670000001)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_568_8268513340008); __Pyx_GIVEREF(__pyx_float_568_8268513340008); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_568_8268513340008)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Python, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04279016700002103); __Pyx_GIVEREF(__pyx_float_0_04279016700002103); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_04279016700002103)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04217579200030741); __Pyx_GIVEREF(__pyx_float_0_04217579200030741); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_04217579200030741)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04144937499950174); __Pyx_GIVEREF(__pyx_float_0_04144937499950174); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_04144937499950174)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_3156377909999719); __Pyx_GIVEREF(__pyx_float_0_3156377909999719); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_3156377909999719)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_3050229999998919); __Pyx_GIVEREF(__pyx_float_0_3050229999998919); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_3050229999998919)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_30736125000021275); __Pyx_GIVEREF(__pyx_float_0_30736125000021275); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_30736125000021275)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_036927834000380244); __Pyx_GIVEREF(__pyx_float_0_036927834000380244); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_036927834000380244)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_037345290999837744); __Pyx_GIVEREF(__pyx_float_0_037345290999837744); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_037345290999837744)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_036939124999662454); __Pyx_GIVEREF(__pyx_float_0_036939124999662454); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_036939124999662454)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_23315270799957943); __Pyx_GIVEREF(__pyx_float_0_23315270799957943); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_23315270799957943)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_23548262500025885); __Pyx_GIVEREF(__pyx_float_0_23548262500025885); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_23548262500025885)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_23372695799935173); __Pyx_GIVEREF(__pyx_float_0_23372695799935173); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_23372695799935173)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_dynamic, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03418854200026544); __Pyx_GIVEREF(__pyx_float_0_03418854200026544); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_03418854200026544)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03363912500026345); __Pyx_GIVEREF(__pyx_float_0_03363912500026345); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_03363912500026345)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0336961249995511); __Pyx_GIVEREF(__pyx_float_0_0336961249995511); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_0336961249995511)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_24899391600047238); __Pyx_GIVEREF(__pyx_float_0_24899391600047238); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_24899391600047238)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_26036370800011355); __Pyx_GIVEREF(__pyx_float_0_26036370800011355); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_26036370800011355)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_24373120899963396); __Pyx_GIVEREF(__pyx_float_0_24373120899963396); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_24373120899963396)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_guided, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0424661670003843); __Pyx_GIVEREF(__pyx_float_0_0424661670003843); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0424661670003843)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04156329099987488); __Pyx_GIVEREF(__pyx_float_0_04156329099987488); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_04156329099987488)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_04186825000033423); __Pyx_GIVEREF(__pyx_float_0_04186825000033423); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_04186825000033423)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_31180666700038273); __Pyx_GIVEREF(__pyx_float_0_31180666700038273); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_31180666700038273)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_30542558300021483); __Pyx_GIVEREF(__pyx_float_0_30542558300021483); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_30542558300021483)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_30452662500010774); __Pyx_GIVEREF(__pyx_float_0_30452662500010774); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_30452662500010774)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_static, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_10576324999965436); __Pyx_GIVEREF(__pyx_float_0_10576324999965436); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_10576324999965436)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_1028390829997079); __Pyx_GIVEREF(__pyx_float_0_1028390829997079); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_1028390829997079)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_10284191600021586); __Pyx_GIVEREF(__pyx_float_0_10284191600021586); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_10284191600021586)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_9415007090001382); __Pyx_GIVEREF(__pyx_float_0_9415007090001382); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_9415007090001382)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_9382833330000722); __Pyx_GIVEREF(__pyx_float_0_9382833330000722); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_9382833330000722)) __PYX_ERR(0, 35, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_938642749999417); __Pyx_GIVEREF(__pyx_float_0_938642749999417); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_938642749999417)) __PYX_ERR(0, 35, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha, __pyx_t_2) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Unthreaded, __pyx_t_1) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_default_benchmarks, __pyx_t_3) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
036:
037: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify.run; replace("Nearest-Neighbor", "Catmull-Rom")
+038: def run(self, image, shift_row, shift_col, float magnification_row, float magnification_col, run_type=None) -> np.ndarray:
/* Python wrapper */ static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_2run, "\n Shift and magnify an image using Catmull-Rom interpolation\n :param image: The image to shift and magnify\n :type image: np.ndarray or memoryview\n :param shift_row: The number of rows to shift the image\n :type shift_row: int or float or np.ndarray\n :param shift_col: The number of columns to shift the image\n :type shift_col: int or float or np.ndarray\n :param magnification_row: The magnification factor for the rows\n :type magnification_row: float\n :param magnification_col: The magnification factor for the columns\n :type magnification_col: float\n :return: The shifted and magnified image\n "); static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_3run = {"run", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_3run, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_2run}; static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_image = 0; PyObject *__pyx_v_shift_row = 0; PyObject *__pyx_v_shift_col = 0; float __pyx_v_magnification_row; float __pyx_v_magnification_col; PyObject *__pyx_v_run_type = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyArrayObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 38, __pyx_L3_error) #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,&__pyx_n_s_run_type,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, 1); __PYX_ERR(0, 38, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, 2); __PYX_ERR(0, 38, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, 3); __PYX_ERR(0, 38, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, 4); __PYX_ERR(0, 38, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[5]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, 5); __PYX_ERR(0, 38, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_run_type); if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "run") < 0)) __PYX_ERR(0, 38, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_self = values[0]; __pyx_v_image = values[1]; __pyx_v_shift_row = values[2]; __pyx_v_shift_col = values[3]; __pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) __pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 38, __pyx_L3_error) __pyx_v_run_type = values[6]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("run", 0, 6, 7, __pyx_nargs); __PYX_ERR(0, 38, __pyx_L3_error) goto __pyx_L3_error; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_2run(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col, __pyx_v_run_type); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_2run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col, PyObject *__pyx_v_run_type) { PyArrayObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run", 0); __Pyx_INCREF(__pyx_v_image); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_INCREF(__pyx_v_shift_col); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_shift_row); __Pyx_XDECREF(__pyx_v_shift_col); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__26 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_magnification_row, __pyx_n_s_magnification_col, __pyx_n_s_run_type); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_2, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 38, __pyx_L1_error) /* … */ __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 38, __pyx_L1_error) __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_3run, 0, __pyx_n_s_ShiftAndMagnify_run, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_11, __pyx_tuple__28); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_2, __pyx_t_11) < 0) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_tuple__28 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 38, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28);
039: """
040: Shift and magnify an image using Catmull-Rom interpolation
041: :param image: The image to shift and magnify
042: :type image: np.ndarray or memoryview
043: :param shift_row: The number of rows to shift the image
044: :type shift_row: int or float or np.ndarray
045: :param shift_col: The number of columns to shift the image
046: :type shift_col: int or float or np.ndarray
047: :param magnification_row: The magnification factor for the rows
048: :type magnification_row: float
049: :param magnification_col: The magnification factor for the columns
050: :type magnification_col: float
051: :return: The shifted and magnified image
052: """
+053: image = check_image(image)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_check_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_image}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_image, __pyx_t_1); __pyx_t_1 = 0;
+054: shift_row = value2array(shift_row, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_shift_row, __pyx_t_5}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_row, __pyx_t_1); __pyx_t_1 = 0;
+055: shift_col = value2array(shift_col, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_shift_col, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_col, __pyx_t_1); __pyx_t_1 = 0;
+056: return self._run(image, shift_row, shift_col, magnification_row, magnification_col, run_type=run_type)
__Pyx_XDECREF((PyObject *)__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_run); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyTuple_New(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_image); __Pyx_GIVEREF(__pyx_v_image); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_image)) __PYX_ERR(0, 56, __pyx_L1_error); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_GIVEREF(__pyx_v_shift_row); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_shift_row)) __PYX_ERR(0, 56, __pyx_L1_error); __Pyx_INCREF(__pyx_v_shift_col); __Pyx_GIVEREF(__pyx_v_shift_col); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_shift_col)) __PYX_ERR(0, 56, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_run_type, __pyx_v_run_type) < 0) __PYX_ERR(0, 56, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 56, __pyx_L1_error) __pyx_r = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
057: # tag-end
058:
059: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify.benchmark
+060: def benchmark(self, image, shift_row, shift_col, float magnification_row, float magnification_col):
/* Python wrapper */ static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_5benchmark(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_4benchmark, "\n Benchmark the ShiftAndMagnify run function in multiple run types\n :param image: The image to shift and magnify\n :type image: np.ndarray or memoryview\n :param shift_row: The number of rows to shift the image\n :type shift_row: int or float or np.ndarray\n :param shift_col: The number of columns to shift the image\n :type shift_col: int or float or np.ndarray\n :param magnification_row: The magnification factor for the rows\n :type magnification_row: float\n :param magnification_col: The magnification factor for the columns\n :type magnification_col: float\n :return: The benchmark results\n :rtype: [[run_time, run_type_name, return_value], ...]\n "); static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_5benchmark = {"benchmark", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_5benchmark, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_4benchmark}; static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_5benchmark(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_image = 0; PyObject *__pyx_v_shift_row = 0; PyObject *__pyx_v_shift_col = 0; float __pyx_v_magnification_row; float __pyx_v_magnification_col; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("benchmark (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 60, __pyx_L3_error) #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0}; PyObject* values[6] = {0,0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, 1); __PYX_ERR(0, 60, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, 2); __PYX_ERR(0, 60, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, 3); __PYX_ERR(0, 60, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, 4); __PYX_ERR(0, 60, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[5]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, 5); __PYX_ERR(0, 60, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "benchmark") < 0)) __PYX_ERR(0, 60, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 6)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); } __pyx_v_self = values[0]; __pyx_v_image = values[1]; __pyx_v_shift_row = values[2]; __pyx_v_shift_col = values[3]; __pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) __pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("benchmark", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 60, __pyx_L3_error) goto __pyx_L3_error; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_4benchmark(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_4benchmark(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("benchmark", 0); __Pyx_INCREF(__pyx_v_image); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_INCREF(__pyx_v_shift_col); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_shift_row); __Pyx_XDECREF(__pyx_v_shift_col); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__29 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_magnification_row, __pyx_n_s_magnification_col); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* … */ __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_5benchmark, 0, __pyx_n_s_ShiftAndMagnify_benchmark, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_11); PyList_Append(__pyx_t_7, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_benchmark, __pyx_t_11) < 0) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_benchmark, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 60, __pyx_L1_error)
061: """
062: Benchmark the ShiftAndMagnify run function in multiple run types
063: :param image: The image to shift and magnify
064: :type image: np.ndarray or memoryview
065: :param shift_row: The number of rows to shift the image
066: :type shift_row: int or float or np.ndarray
067: :param shift_col: The number of columns to shift the image
068: :type shift_col: int or float or np.ndarray
069: :param magnification_row: The magnification factor for the rows
070: :type magnification_row: float
071: :param magnification_col: The magnification factor for the columns
072: :type magnification_col: float
073: :return: The benchmark results
074: :rtype: [[run_time, run_type_name, return_value], ...]
075: """
+076: image = check_image(image)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_check_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_image}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_image, __pyx_t_1); __pyx_t_1 = 0;
+077: shift_row = value2array(shift_row, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_shift_row, __pyx_t_5}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_row, __pyx_t_1); __pyx_t_1 = 0;
+078: shift_col = value2array(shift_col, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_shift_col, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_col, __pyx_t_1); __pyx_t_1 = 0;
+079: return super().benchmark(image, shift_row, shift_col, magnification_row, magnification_col)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_2) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 79, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self)) __PYX_ERR(0, 79, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_benchmark); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_6, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_t_2, __pyx_t_5}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
080: # tag-end
081:
082: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_opencl; replace("nearest_neighbor", "catmull_rom")
+083: def _run_opencl(self, image, shift_row, shift_col, float magnification_row, float magnification_col, dict device) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_7_run_opencl = {"_run_opencl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_7_run_opencl, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_image = 0;
PyObject *__pyx_v_shift_row = 0;
PyObject *__pyx_v_shift_col = 0;
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
PyObject *__pyx_v_device = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 83, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,&__pyx_n_s_device,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 1); __PYX_ERR(0, 83, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 2); __PYX_ERR(0, 83, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 3); __PYX_ERR(0, 83, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 4); __PYX_ERR(0, 83, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 5); __PYX_ERR(0, 83, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_device)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 6); __PYX_ERR(0, 83, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_opencl") < 0)) __PYX_ERR(0, 83, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = values[1];
__pyx_v_shift_row = values[2];
__pyx_v_shift_col = values[3];
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
__pyx_v_device = ((PyObject*)values[6]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 83, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_device), (&PyDict_Type), 1, "device", 1))) __PYX_ERR(0, 83, __pyx_L1_error)
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_6_run_opencl(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col, __pyx_v_device);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_6_run_opencl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col, PyObject *__pyx_v_device) {
PyObject *__pyx_v_cl_ctx = NULL;
PyObject *__pyx_v_dc = NULL;
PyObject *__pyx_v_cl_queue = NULL;
PyObject *__pyx_v_output_shape = NULL;
PyObject *__pyx_v_image_out = NULL;
PyObject *__pyx_v_max_slices = NULL;
PyObject *__pyx_v_mf = NULL;
PyObject *__pyx_v_input_opencl = NULL;
PyObject *__pyx_v_output_opencl = NULL;
PyObject *__pyx_v_code = NULL;
PyObject *__pyx_v_prg = NULL;
PyObject *__pyx_v_knl = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_n_slices = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_cl_ctx);
__Pyx_XDECREF(__pyx_v_dc);
__Pyx_XDECREF(__pyx_v_cl_queue);
__Pyx_XDECREF(__pyx_v_output_shape);
__Pyx_XDECREF(__pyx_v_image_out);
__Pyx_XDECREF(__pyx_v_max_slices);
__Pyx_XDECREF(__pyx_v_mf);
__Pyx_XDECREF(__pyx_v_input_opencl);
__Pyx_XDECREF(__pyx_v_output_opencl);
__Pyx_XDECREF(__pyx_v_code);
__Pyx_XDECREF(__pyx_v_prg);
__Pyx_XDECREF(__pyx_v_knl);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_n_slices);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__31 = PyTuple_Pack(21, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_magnification_row, __pyx_n_s_magnification_col, __pyx_n_s_device, __pyx_n_s_cl_ctx, __pyx_n_s_dc, __pyx_n_s_cl_queue, __pyx_n_s_output_shape, __pyx_n_s_image_out, __pyx_n_s_max_slices, __pyx_n_s_mf, __pyx_n_s_input_opencl, __pyx_n_s_output_opencl, __pyx_n_s_code, __pyx_n_s_prg, __pyx_n_s_knl, __pyx_n_s_i, __pyx_n_s_n_slices); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__31);
__Pyx_GIVEREF(__pyx_tuple__31);
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 83, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_7_run_opencl, 0, __pyx_n_s_ShiftAndMagnify__run_opencl, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_opencl, __pyx_t_10) < 0) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 21, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_opencl, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 83, __pyx_L1_error)
084:
085: # QUEUE AND CONTEXT
+086: cl_ctx = cl.Context([device['device']])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Context); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 86, __pyx_L1_error) } __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_device); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_cl_ctx = __pyx_t_1; __pyx_t_1 = 0;
+087: dc = device['device']
if (unlikely(__pyx_v_device == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 87, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_device); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_dc = __pyx_t_1;
__pyx_t_1 = 0;
+088: cl_queue = cl.CommandQueue(cl_ctx)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_cl); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_CommandQueue); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cl_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_cl_queue = __pyx_t_1; __pyx_t_1 = 0;
089:
+090: output_shape = (image.shape[0], int(image.shape[1]*magnification_row), int(image.shape[2]*magnification_col))
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4)) __PYX_ERR(0, 90, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_v_output_shape = ((PyObject*)__pyx_t_6); __pyx_t_6 = 0;
+091: image_out = np.zeros(output_shape, dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_output_shape); __Pyx_GIVEREF(__pyx_v_output_shape); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_output_shape)) __PYX_ERR(0, 91, __pyx_L1_error); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_image_out = __pyx_t_3; __pyx_t_3 = 0;
092:
093: # TODO 3 is a magic number
+094: max_slices = int((dc.global_mem_size // (image_out[0,:,:].nbytes + image[0,:,:].nbytes))/3)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dc, __pyx_n_s_global_mem_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_image_out, __pyx_tuple__11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_image, __pyx_tuple__11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_FloorDivide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_2, __pyx_int_3, 3, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_max_slices = __pyx_t_2; __pyx_t_2 = 0; /* … */ __pyx_tuple__11 = PyTuple_Pack(3, __pyx_int_0, __pyx_slice__5, __pyx_slice__5); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11);
095: # TODO add exception if max_slices < 1
096:
+097: mf = cl.mem_flags
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_mem_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_mf = __pyx_t_1; __pyx_t_1 = 0;
+098: input_opencl = cl.Buffer(cl_ctx, mf.READ_ONLY, image[0:max_slices,:,:].nbytes)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mf, __pyx_n_s_READ_ONLY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySlice_New(__pyx_int_0, __pyx_v_max_slices, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_slice__5)) __PYX_ERR(0, 98, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_slice__5)) __PYX_ERR(0, 98, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_image, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_cl_ctx, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_input_opencl = __pyx_t_1; __pyx_t_1 = 0;
+099: cl.enqueue_copy(cl_queue, input_opencl, image[0:max_slices,:,:]).wait()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_enqueue_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PySlice_New(__pyx_int_0, __pyx_v_max_slices, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__5)) __PYX_ERR(0, 99, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_slice__5)) __PYX_ERR(0, 99, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_image, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_cl_queue, __pyx_v_input_opencl, __pyx_t_4}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_3, }; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+100: output_opencl = cl.Buffer(cl_ctx, mf.WRITE_ONLY, image_out[0:max_slices,:,:].nbytes)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_mf, __pyx_n_s_WRITE_ONLY); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PySlice_New(__pyx_int_0, __pyx_v_max_slices, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__5)) __PYX_ERR(0, 100, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_slice__5)) __PYX_ERR(0, 100, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_image_out, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_nbytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_cl_ctx, __pyx_t_2, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_output_opencl = __pyx_t_1; __pyx_t_1 = 0;
101:
+102: code = self._get_cl_code("_le_interpolation_catmull_rom_.cl", device['DP'])
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_get_cl_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 102, __pyx_L1_error) } __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_DP); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_kp_u_le_interpolation_catmull_rom__c, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_code = __pyx_t_1; __pyx_t_1 = 0;
+103: prg = cl.Program(cl_ctx, code).build()
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_cl); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Program); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_cl_ctx, __pyx_v_code}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_build); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_3, }; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_v_prg = __pyx_t_1; __pyx_t_1 = 0;
+104: knl = prg.shiftAndMagnify
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_prg, __pyx_n_s_shiftAndMagnify); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_knl = __pyx_t_1; __pyx_t_1 = 0;
105:
+106: for i in range(0, image.shape[0], max_slices):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0)) __PYX_ERR(0, 106, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error); __Pyx_INCREF(__pyx_v_max_slices); __Pyx_GIVEREF(__pyx_v_max_slices); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_max_slices)) __PYX_ERR(0, 106, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 106, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 106, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(0, 106, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 106, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+107: if image.shape[0] - i >= max_slices:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Subtract(__pyx_t_3, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_v_max_slices, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L5; }
+108: n_slices = max_slices
__Pyx_INCREF(__pyx_v_max_slices); __Pyx_XDECREF_SET(__pyx_v_n_slices, __pyx_v_max_slices);
109: else:
+110: n_slices = image.shape[0] - i
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF_SET(__pyx_v_n_slices, __pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L5:;
111: #TODO check that magnification_row and magnification_col are correct
112: knl(cl_queue,
+113: (n_slices, int(image.shape[1]*magnification_row), int(image.shape[2]*magnification_col)),
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyNumber_Multiply(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_v_n_slices); __Pyx_GIVEREF(__pyx_v_n_slices); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_n_slices)) __PYX_ERR(0, 113, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_10); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_10)) __PYX_ERR(0, 113, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_10 = 0;
+114: self.get_work_group(dc, (n_slices, image.shape[1]*magnification_row, image.shape[2]*magnification_col)),
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_get_work_group); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = PyNumber_Multiply(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_4, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = PyNumber_Multiply(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_n_slices); __Pyx_GIVEREF(__pyx_v_n_slices); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_slices)) __PYX_ERR(0, 114, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_13); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_13)) __PYX_ERR(0, 114, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_14); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_14)) __PYX_ERR(0, 114, __pyx_L1_error); __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_14 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_v_dc, __pyx_t_4}; __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; }
115: input_opencl,
116: output_opencl,
+117: np.float32(shift_row[0]),
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_shift_row, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_14, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_4}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; }
+118: np.float32(shift_col[0]),
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_shift_col, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_4}; __pyx_t_14 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; }
+119: np.float32(magnification_row),
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_magnification_row); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_4}; __pyx_t_13 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; }
+120: np.float32(magnification_col)).wait()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_magnification_col); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_16)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_16); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_4}; __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_INCREF(__pyx_v_knl); __pyx_t_15 = __pyx_v_knl; __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[10] = {__pyx_t_4, __pyx_v_cl_queue, __pyx_t_11, __pyx_t_10, __pyx_v_input_opencl, __pyx_v_output_opencl, __pyx_t_6, __pyx_t_14, __pyx_t_13, __pyx_t_12}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_5, 9+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_wait); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_15))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_2, }; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_15, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
121:
+122: cl.enqueue_copy(cl_queue, image_out[i:i+n_slices,:,:], output_opencl).wait()
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_enqueue_copy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_v_i, __pyx_v_n_slices); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13 = PySlice_New(__pyx_v_i, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_13); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13)) __PYX_ERR(0, 122, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__5)) __PYX_ERR(0, 122, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_slice__5)) __PYX_ERR(0, 122, __pyx_L1_error); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_image_out, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_cl_queue, __pyx_t_13, __pyx_v_output_opencl}; __pyx_t_15 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_wait); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_15, }; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+123: if i<=image.shape[0]-max_slices:
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Subtract(__pyx_t_12, __pyx_v_max_slices); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyObject_RichCompare(__pyx_v_i, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (__pyx_t_9) { /* … */ }
+124: cl.enqueue_copy(cl_queue, input_opencl, image[i+n_slices:i+2*n_slices,:,:]).wait()
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_cl); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_enqueue_copy); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = PyNumber_Add(__pyx_v_i, __pyx_v_n_slices); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_2 = __Pyx_PyInt_MultiplyCObj(__pyx_int_2, __pyx_v_n_slices, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_14 = PyNumber_Add(__pyx_v_i, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PySlice_New(__pyx_t_15, __pyx_t_14, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_slice__5)) __PYX_ERR(0, 124, __pyx_L1_error); __Pyx_INCREF(__pyx_slice__5); __Pyx_GIVEREF(__pyx_slice__5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_slice__5)) __PYX_ERR(0, 124, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_image, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_14, __pyx_v_cl_queue, __pyx_v_input_opencl, __pyx_t_2}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_3, }; __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
125:
+126: cl_queue.finish()
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_cl_queue, __pyx_n_s_finish); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_13))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_3, }; __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
127:
+128: input_opencl.release()
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_opencl, __pyx_n_s_release); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_13, }; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+129: output_opencl.release()
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_opencl, __pyx_n_s_release); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_13, }; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
130:
+131: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
132: # tag-end
133:
134: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_unthreaded
+135: def _run_unthreaded(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float magnification_row, float magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_9_run_unthreaded = {"_run_unthreaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_9_run_unthreaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 135, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 1); __PYX_ERR(0, 135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 2); __PYX_ERR(0, 135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 3); __PYX_ERR(0, 135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 4); __PYX_ERR(0, 135, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 5); __PYX_ERR(0, 135, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_unthreaded") < 0)) __PYX_ERR(0, 135, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 135, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 135, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 135, __pyx_L3_error)
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 135, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_8_run_unthreaded(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_8_run_unthreaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__33 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_magnification_row, __pyx_n_s_magnification_col, __pyx_n_s_nFrames, __pyx_n_s_rows, __pyx_n_s_cols, __pyx_n_s_rowsM, __pyx_n_s_colsM, __pyx_n_s_image_out, __pyx_n_s_image_out_2, __pyx_n_s_image_in, __pyx_n_s_f, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_row, __pyx_n_s_col); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__33);
__Pyx_GIVEREF(__pyx_tuple__33);
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 135, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_9_run_unthreaded, 0, __pyx_n_s_ShiftAndMagnify__run_unthreaded, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_unthreaded, __pyx_t_11) < 0) __PYX_ERR(0, 135, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_unthreaded, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 135, __pyx_L1_error)
+136: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+137: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+138: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
+139: cdef int rowsM = <int>(rows * magnification_row)
__pyx_v_rowsM = ((int)(__pyx_v_rows * __pyx_v_magnification_row));
+140: cdef int colsM = <int>(cols * magnification_col)
__pyx_v_colsM = ((int)(__pyx_v_cols * __pyx_v_magnification_col));
141:
+142: image_out = np.zeros((nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+143: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 143, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+144: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
145:
146: cdef int f, i, j
147: cdef float row, col
148:
+149: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+150: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+151: for j in range(colsM):
__pyx_t_10 = __pyx_v_colsM;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+152: col = j / magnification_col - shift_col[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_col = ((((float)__pyx_v_j) / __pyx_v_magnification_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_13 * __pyx_v_shift_col.strides[0]) ))));
+153: for i in range(rowsM):
__pyx_t_14 = __pyx_v_rowsM;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+154: row = i / magnification_row - shift_row[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_row = ((((float)__pyx_v_i) / __pyx_v_magnification_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_13 * __pyx_v_shift_row.strides[0]) ))));
+155: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_13 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_13 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
156:
+157: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
158: # tag-end
159:
160: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_unthreaded; replace("_run_unthreaded", "_run_threaded"); replace("range(colsM)", "prange(colsM)")
+161: def _run_threaded(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float magnification_row, float magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_11_run_threaded = {"_run_threaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_11_run_threaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 161, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 1); __PYX_ERR(0, 161, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 2); __PYX_ERR(0, 161, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 3); __PYX_ERR(0, 161, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 4); __PYX_ERR(0, 161, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 5); __PYX_ERR(0, 161, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded") < 0)) __PYX_ERR(0, 161, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 161, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 161, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 161, __pyx_L3_error)
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 161, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_10_run_threaded(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_10_run_threaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 161, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_11_run_threaded, 0, __pyx_n_s_ShiftAndMagnify__run_threaded, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded, __pyx_t_10) < 0) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
__pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 161, __pyx_L1_error)
+162: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+163: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+164: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
+165: cdef int rowsM = <int>(rows * magnification_row)
__pyx_v_rowsM = ((int)(__pyx_v_rows * __pyx_v_magnification_row));
+166: cdef int colsM = <int>(cols * magnification_col)
__pyx_v_colsM = ((int)(__pyx_v_cols * __pyx_v_magnification_col));
167:
+168: image_out = np.zeros((nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+169: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 169, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+170: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
171:
172: cdef int f, i, j
173: cdef float row, col
174:
+175: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+176: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+177: for j in prange(colsM):
__pyx_t_10 = __pyx_v_colsM;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_12 = (__pyx_t_10 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_12 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row)
#endif /* _OPENMP */
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_12; __pyx_t_11++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_11);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+178: col = j / magnification_col - shift_col[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_col = ((((float)__pyx_v_j) / __pyx_v_magnification_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_13 * __pyx_v_shift_col.strides[0]) ))));
+179: for i in range(rowsM):
__pyx_t_14 = __pyx_v_rowsM;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+180: row = i / magnification_row - shift_row[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_row = ((((float)__pyx_v_i) / __pyx_v_magnification_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_13 * __pyx_v_shift_row.strides[0]) ))));
+181: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_13 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_13 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
}
182:
+183: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
184: # tag-end
185:
186: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_unthreaded; replace("_run_unthreaded", "_run_threaded_static"); replace("range(colsM)", 'prange(colsM, schedule="static")')
+187: def _run_threaded_static(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float magnification_row, float magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_13_run_threaded_static = {"_run_threaded_static", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_13_run_threaded_static, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 187, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 1); __PYX_ERR(0, 187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 2); __PYX_ERR(0, 187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 3); __PYX_ERR(0, 187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 4); __PYX_ERR(0, 187, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 5); __PYX_ERR(0, 187, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_static") < 0)) __PYX_ERR(0, 187, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 187, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 187, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 187, __pyx_L3_error)
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 187, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 187, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_12_run_threaded_static(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_12_run_threaded_static(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_13_run_threaded_static, 0, __pyx_n_s_ShiftAndMagnify__run_threaded_st, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_static, __pyx_t_11) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded_static, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 187, __pyx_L1_error)
+188: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+189: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+190: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
+191: cdef int rowsM = <int>(rows * magnification_row)
__pyx_v_rowsM = ((int)(__pyx_v_rows * __pyx_v_magnification_row));
+192: cdef int colsM = <int>(cols * magnification_col)
__pyx_v_colsM = ((int)(__pyx_v_cols * __pyx_v_magnification_col));
193:
+194: image_out = np.zeros((nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+195: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 195, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+196: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
197:
198: cdef int f, i, j
199: cdef float row, col
200:
+201: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+202: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+203: for j in prange(colsM, schedule="static"):
__pyx_t_10 = __pyx_v_colsM;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_12 = (__pyx_t_10 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_12 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(static)
#endif /* _OPENMP */
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_12; __pyx_t_11++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_11);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+204: col = j / magnification_col - shift_col[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_col = ((((float)__pyx_v_j) / __pyx_v_magnification_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_13 * __pyx_v_shift_col.strides[0]) ))));
+205: for i in range(rowsM):
__pyx_t_14 = __pyx_v_rowsM;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+206: row = i / magnification_row - shift_row[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_row = ((((float)__pyx_v_i) / __pyx_v_magnification_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_13 * __pyx_v_shift_row.strides[0]) ))));
+207: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_13 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_13 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
}
208:
+209: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
210: # tag-end
211:
212: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_unthreaded; replace("_run_unthreaded", "_run_threaded_dynamic"); replace("range(colsM)", 'prange(colsM, schedule="dynamic")')
+213: def _run_threaded_dynamic(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float magnification_row, float magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_15_run_threaded_dynamic = {"_run_threaded_dynamic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_15_run_threaded_dynamic, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 213, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 1); __PYX_ERR(0, 213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 2); __PYX_ERR(0, 213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 3); __PYX_ERR(0, 213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 4); __PYX_ERR(0, 213, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 5); __PYX_ERR(0, 213, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_dynamic") < 0)) __PYX_ERR(0, 213, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 213, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 213, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 213, __pyx_L3_error)
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 213, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_14_run_threaded_dynamic(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_14_run_threaded_dynamic(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 213, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_15_run_threaded_dynamic, 0, __pyx_n_s_ShiftAndMagnify__run_threaded_dy, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 213, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_dynamic, __pyx_t_10) < 0) __PYX_ERR(0, 213, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
__pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded_dynamic, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 213, __pyx_L1_error)
+214: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+215: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+216: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
+217: cdef int rowsM = <int>(rows * magnification_row)
__pyx_v_rowsM = ((int)(__pyx_v_rows * __pyx_v_magnification_row));
+218: cdef int colsM = <int>(cols * magnification_col)
__pyx_v_colsM = ((int)(__pyx_v_cols * __pyx_v_magnification_col));
219:
+220: image_out = np.zeros((nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 220, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+221: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 221, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+222: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
223:
224: cdef int f, i, j
225: cdef float row, col
226:
+227: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+228: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+229: for j in prange(colsM, schedule="dynamic"):
__pyx_t_10 = __pyx_v_colsM;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_12 = (__pyx_t_10 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_12 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(dynamic)
#endif /* _OPENMP */
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_12; __pyx_t_11++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_11);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+230: col = j / magnification_col - shift_col[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_col = ((((float)__pyx_v_j) / __pyx_v_magnification_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_13 * __pyx_v_shift_col.strides[0]) ))));
+231: for i in range(rowsM):
__pyx_t_14 = __pyx_v_rowsM;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+232: row = i / magnification_row - shift_row[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_row = ((((float)__pyx_v_i) / __pyx_v_magnification_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_13 * __pyx_v_shift_row.strides[0]) ))));
+233: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_13 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_13 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
}
234:
+235: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
236: # tag-end
237:
238: # tag-copy: _le_interpolation_nearest_neighbor.ShiftAndMagnify._run_unthreaded; replace("_run_unthreaded", "_run_threaded_guided"); replace("range(colsM)", 'prange(colsM, schedule="guided")')
+239: def _run_threaded_guided(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float magnification_row, float magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_17_run_threaded_guided = {"_run_threaded_guided", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_17_run_threaded_guided, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_magnification_row;
float __pyx_v_magnification_col;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 239, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 1); __PYX_ERR(0, 239, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 2); __PYX_ERR(0, 239, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 3); __PYX_ERR(0, 239, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 4); __PYX_ERR(0, 239, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 5); __PYX_ERR(0, 239, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_guided") < 0)) __PYX_ERR(0, 239, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 239, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 239, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 239, __pyx_L3_error)
__pyx_v_magnification_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_magnification_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
__pyx_v_magnification_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_magnification_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 239, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 239, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_16_run_threaded_guided(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_16_run_threaded_guided(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_magnification_row, float __pyx_v_magnification_col) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_17_run_threaded_guided, 0, __pyx_n_s_ShiftAndMagnify__run_threaded_gu, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 239, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_guided, __pyx_t_11) < 0) __PYX_ERR(0, 239, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded_guided, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 239, __pyx_L1_error)
+240: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+241: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+242: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
+243: cdef int rowsM = <int>(rows * magnification_row)
__pyx_v_rowsM = ((int)(__pyx_v_rows * __pyx_v_magnification_row));
+244: cdef int colsM = <int>(cols * magnification_col)
__pyx_v_colsM = ((int)(__pyx_v_cols * __pyx_v_magnification_col));
245:
+246: image_out = np.zeros((nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+247: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 247, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+248: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
249:
250: cdef int f, i, j
251: cdef float row, col
252:
+253: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+254: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+255: for j in prange(colsM, schedule="guided"):
__pyx_t_10 = __pyx_v_colsM;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_12 = (__pyx_t_10 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_12 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(guided)
#endif /* _OPENMP */
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_12; __pyx_t_11++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_11);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+256: col = j / magnification_col - shift_col[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_col = ((((float)__pyx_v_j) / __pyx_v_magnification_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_13 * __pyx_v_shift_col.strides[0]) ))));
+257: for i in range(rowsM):
__pyx_t_14 = __pyx_v_rowsM;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+258: row = i / magnification_row - shift_row[f]
__pyx_t_13 = __pyx_v_f;
__pyx_v_row = ((((float)__pyx_v_i) / __pyx_v_magnification_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_13 * __pyx_v_shift_row.strides[0]) ))));
+259: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_13 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_13 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
}
260:
+261: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 261, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
262: # tag-end
263:
+264: def _run_python(self, image, shift_row, shift_col, magnification_row, magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_19_run_python(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_19_run_python = {"_run_python", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_19_run_python, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_19_run_python(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_image = 0;
PyObject *__pyx_v_shift_row = 0;
PyObject *__pyx_v_shift_col = 0;
PyObject *__pyx_v_magnification_row = 0;
PyObject *__pyx_v_magnification_col = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_python (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 264, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 1); __PYX_ERR(0, 264, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 2); __PYX_ERR(0, 264, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 3); __PYX_ERR(0, 264, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 4); __PYX_ERR(0, 264, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 264, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 5); __PYX_ERR(0, 264, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_python") < 0)) __PYX_ERR(0, 264, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = values[1];
__pyx_v_shift_row = values[2];
__pyx_v_shift_col = values[3];
__pyx_v_magnification_row = values[4];
__pyx_v_magnification_col = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 264, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_18_run_python(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_18_run_python(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, PyObject *__pyx_v_magnification_row, PyObject *__pyx_v_magnification_col) {
PyObject *__pyx_v_image_out = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_python", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__39 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_magnification_row, __pyx_n_s_magnification_col, __pyx_n_s_image_out); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__39);
__Pyx_GIVEREF(__pyx_tuple__39);
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_19_run_python, 0, __pyx_n_s_ShiftAndMagnify__run_python, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_python, __pyx_t_10) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_python, 264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 264, __pyx_L1_error)
+265: image_out = _py_shift_magnify(image, shift_row, shift_col, magnification_row, magnification_col)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_py_shift_magnify); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+266: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
267:
+268: def _run_njit(self,image, shift_row, shift_col, magnification_row, magnification_col) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_21_run_njit(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_21_run_njit = {"_run_njit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_21_run_njit, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_21_run_njit(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_image = 0;
PyObject *__pyx_v_shift_row = 0;
PyObject *__pyx_v_shift_col = 0;
PyObject *__pyx_v_magnification_row = 0;
PyObject *__pyx_v_magnification_col = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_njit (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 268, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_magnification_row,&__pyx_n_s_magnification_col,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, 1); __PYX_ERR(0, 268, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, 2); __PYX_ERR(0, 268, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, 3); __PYX_ERR(0, 268, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, 4); __PYX_ERR(0, 268, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_magnification_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 268, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, 5); __PYX_ERR(0, 268, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_njit") < 0)) __PYX_ERR(0, 268, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_image = values[1];
__pyx_v_shift_row = values[2];
__pyx_v_shift_col = values[3];
__pyx_v_magnification_row = values[4];
__pyx_v_magnification_col = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_njit", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 268, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_njit", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_20_run_njit(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_20_run_njit(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, PyObject *__pyx_v_magnification_row, PyObject *__pyx_v_magnification_col) {
PyObject *__pyx_v_image_out = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_njit", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftAndMagnify._run_njit", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 268, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_15ShiftAndMagnify_21_run_njit, 0, __pyx_n_s_ShiftAndMagnify__run_njit, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_njit, __pyx_t_11) < 0) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_njit, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 268, __pyx_L1_error)
+269: image_out = _njit_shift_magnify(image, shift_row, shift_col, magnification_row, magnification_col)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_njit_shift_magnify); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_3, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_magnification_row, __pyx_v_magnification_col}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+270: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 270, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
271:
+272: class ShiftScaleRotate(LiquidEngine):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LiquidEngine); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_Py3MetaclassPrepare(__pyx_t_9, __pyx_t_4, __pyx_n_s_ShiftScaleRotate, __pyx_n_s_ShiftScaleRotate, (PyObject *) NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_kp_s_Shift_Scale_and_Rotate_affine_t); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_4 != __pyx_t_5) { if (unlikely((PyDict_SetItemString(__pyx_t_11, "__orig_bases__", __pyx_t_5) < 0))) __PYX_ERR(0, 272, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* … */ __pyx_t_10 = __Pyx_Py3ClassCreate(__pyx_t_9, __pyx_n_s_ShiftScaleRotate, __pyx_t_4, __pyx_t_11, NULL, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__Pyx_CyFunction_InitClassCell(__pyx_t_5, __pyx_t_10) < 0) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_ShiftScaleRotate, __pyx_t_10) < 0) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
273: """
274: Shift, Scale and Rotate (affine transform) using the NanoPyx Liquid Engine
275: """
276:
+277: def __init__(self, clear_benchmarks=False, testing=False):
/* Python wrapper */
static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_clear_benchmarks = 0;
PyObject *__pyx_v_testing = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 277, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_clear_benchmarks,&__pyx_n_s_testing,0};
PyObject* values[3] = {0,0,0};
values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 277, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_clear_benchmarks);
if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 277, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_testing);
if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 277, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 277, __pyx_L3_error)
}
} else {
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
__pyx_v_clear_benchmarks = values[1];
__pyx_v_testing = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 277, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate___init__(__pyx_self, __pyx_v_self, __pyx_v_clear_benchmarks, __pyx_v_testing);
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_clear_benchmarks, PyObject *__pyx_v_testing) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_1__init__, 0, __pyx_n_s_ShiftScaleRotate___init, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_7);
PyList_Append(__pyx_t_5, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_tuple__25);
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_init, __pyx_t_7) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_init, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 277, __pyx_L1_error)
+278: self._designation = "ShiftScaleRotate_CR"
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_designation, __pyx_n_u_ShiftScaleRotate_CR) < 0) __PYX_ERR(0, 278, __pyx_L1_error)
+279: super().__init__(clear_benchmarks=clear_benchmarks, testing=testing,
__pyx_t_1 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_1) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 279, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self)) __PYX_ERR(0, 279, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_clear_benchmarks, __pyx_v_clear_benchmarks) < 0) __PYX_ERR(0, 279, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_testing, __pyx_v_testing) < 0) __PYX_ERR(0, 279, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+280: opencl_=True, unthreaded_=True, threaded_=True, threaded_static_=True,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_opencl, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_unthreaded, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_static, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
+281: threaded_dynamic_=True, threaded_guided_=True)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_dynamic, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_guided, Py_True) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
+282: self._default_benchmarks = {'OpenCL': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.024225791999924695, 0.015266458000041894, 0.01464179200002036], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.07034941599999911, 0.0705873330000486, 0.07121533300005467]}, 'Threaded': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.0313536670000758, 0.03125320799995279, 0.030536375000110638], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.2773344160000306, 0.27500416700013375, 0.27467649999994137]}, 'Threaded_dynamic': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.031138250000140033, 0.030626333000100203, 0.030349666000120123], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.2753899580000052, 0.2755273750001379, 0.2762422920000063]}, 'Threaded_guided': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.030728082999985418, 0.030637290999948164, 0.03038945799994508], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.2746326249998674, 0.27517950000014935, 0.276212624999971]}, 'Threaded_static': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.031082333000085782, 0.03091154200001256, 0.030331541000123252], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.27434850000008737, 0.27468212500002664, 0.2748947920001683]}, 'Unthreaded': {"(['shape(100, 100, 100)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [40000000000.0, 0.03117249999991145, 0.030513165999991543, 0.030640624999932697], "(['shape(100, 300, 300)', 'shape(100,)', 'shape(100,)', 'number(2.0)', 'number(2.0)', 'number(0.0)'], {})": [360000000000.0, 0.2742584170000555, 0.272540625000147, 0.2739061249999395]}}
__pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_024225791999924695); __Pyx_GIVEREF(__pyx_float_0_024225791999924695); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_024225791999924695)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_015266458000041894); __Pyx_GIVEREF(__pyx_float_0_015266458000041894); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_015266458000041894)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_01464179200002036); __Pyx_GIVEREF(__pyx_float_0_01464179200002036); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_01464179200002036)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_07034941599999911); __Pyx_GIVEREF(__pyx_float_0_07034941599999911); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_07034941599999911)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0705873330000486); __Pyx_GIVEREF(__pyx_float_0_0705873330000486); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0705873330000486)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_07121533300005467); __Pyx_GIVEREF(__pyx_float_0_07121533300005467); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_07121533300005467)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_OpenCL, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0313536670000758); __Pyx_GIVEREF(__pyx_float_0_0313536670000758); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0313536670000758)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03125320799995279); __Pyx_GIVEREF(__pyx_float_0_03125320799995279); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_03125320799995279)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030536375000110638); __Pyx_GIVEREF(__pyx_float_0_030536375000110638); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_030536375000110638)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2773344160000306); __Pyx_GIVEREF(__pyx_float_0_2773344160000306); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_2773344160000306)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_27500416700013375); __Pyx_GIVEREF(__pyx_float_0_27500416700013375); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_27500416700013375)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_27467649999994137); __Pyx_GIVEREF(__pyx_float_0_27467649999994137); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_27467649999994137)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_031138250000140033); __Pyx_GIVEREF(__pyx_float_0_031138250000140033); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_031138250000140033)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030626333000100203); __Pyx_GIVEREF(__pyx_float_0_030626333000100203); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_030626333000100203)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030349666000120123); __Pyx_GIVEREF(__pyx_float_0_030349666000120123); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_030349666000120123)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2753899580000052); __Pyx_GIVEREF(__pyx_float_0_2753899580000052); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_2753899580000052)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2755273750001379); __Pyx_GIVEREF(__pyx_float_0_2755273750001379); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_2755273750001379)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2762422920000063); __Pyx_GIVEREF(__pyx_float_0_2762422920000063); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_2762422920000063)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_dynamic, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030728082999985418); __Pyx_GIVEREF(__pyx_float_0_030728082999985418); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_030728082999985418)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030637290999948164); __Pyx_GIVEREF(__pyx_float_0_030637290999948164); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_030637290999948164)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03038945799994508); __Pyx_GIVEREF(__pyx_float_0_03038945799994508); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_03038945799994508)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2746326249998674); __Pyx_GIVEREF(__pyx_float_0_2746326249998674); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_2746326249998674)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_27517950000014935); __Pyx_GIVEREF(__pyx_float_0_27517950000014935); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_27517950000014935)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_276212624999971); __Pyx_GIVEREF(__pyx_float_0_276212624999971); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_276212624999971)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_guided, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_031082333000085782); __Pyx_GIVEREF(__pyx_float_0_031082333000085782); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_031082333000085782)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03091154200001256); __Pyx_GIVEREF(__pyx_float_0_03091154200001256); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_03091154200001256)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030331541000123252); __Pyx_GIVEREF(__pyx_float_0_030331541000123252); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_030331541000123252)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_27434850000008737); __Pyx_GIVEREF(__pyx_float_0_27434850000008737); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_27434850000008737)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_27468212500002664); __Pyx_GIVEREF(__pyx_float_0_27468212500002664); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_27468212500002664)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2748947920001683); __Pyx_GIVEREF(__pyx_float_0_2748947920001683); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_2748947920001683)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_static, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_40000000000_0); __Pyx_GIVEREF(__pyx_float_40000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_40000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_03117249999991145); __Pyx_GIVEREF(__pyx_float_0_03117249999991145); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_03117249999991145)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030513165999991543); __Pyx_GIVEREF(__pyx_float_0_030513165999991543); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_030513165999991543)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_030640624999932697); __Pyx_GIVEREF(__pyx_float_0_030640624999932697); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_030640624999932697)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_100_100_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_360000000000_0); __Pyx_GIVEREF(__pyx_float_360000000000_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_360000000000_0)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2742584170000555); __Pyx_GIVEREF(__pyx_float_0_2742584170000555); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_2742584170000555)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_272540625000147); __Pyx_GIVEREF(__pyx_float_0_272540625000147); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_272540625000147)) __PYX_ERR(0, 282, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_2739061249999395); __Pyx_GIVEREF(__pyx_float_0_2739061249999395); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_2739061249999395)) __PYX_ERR(0, 282, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_shape_100_300_300_shape_100_sha_2, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Unthreaded, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_default_benchmarks, __pyx_t_3) < 0) __PYX_ERR(0, 282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
283:
284: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate.run; replace("Nearest-Neighbor", "Catmull-Rom")
+285: def run(self, image, shift_row, shift_col, float scale_row, float scale_col, float angle, run_type=None) -> np.ndarray:
/* Python wrapper */ static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_2run, "\n Shift and scale an image using Catmull-Rom interpolation\n :param image: The image to shift and magnify\n :type image: np.ndarray\n :param shift_row: The number of rows to shift the image\n :type shift_row: int or float or np.ndarray\n :param shift_col: The number of columns to shift the image\n :type shift_col: int or float or np.ndarray\n :param scale_row: The scale factor for the rows\n :type scale_row: float\n :param scale_col: The scale factor for the columns\n :type scale_col: float\n :param angle: Angle of rotation in radians. Positive is counter clockwise\n :type angle: float\n :return: The shifted, magnified and rotated image\n "); static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_3run = {"run", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_3run, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_2run}; static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_image = 0; PyObject *__pyx_v_shift_row = 0; PyObject *__pyx_v_shift_col = 0; float __pyx_v_scale_row; float __pyx_v_scale_col; float __pyx_v_angle; PyObject *__pyx_v_run_type = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyArrayObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 285, __pyx_L3_error) #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,&__pyx_n_s_run_type,0}; PyObject* values[8] = {0,0,0,0,0,0,0,0}; values[7] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 1); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 2); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 3); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 4); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[5]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 5); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[6]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, 6); __PYX_ERR(0, 285, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 7: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_run_type); if (value) { values[7] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "run") < 0)) __PYX_ERR(0, 285, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7); CYTHON_FALLTHROUGH; case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_self = values[0]; __pyx_v_image = values[1]; __pyx_v_shift_row = values[2]; __pyx_v_shift_col = values[3]; __pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) __pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) __pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L3_error) __pyx_v_run_type = values[7]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("run", 0, 7, 8, __pyx_nargs); __PYX_ERR(0, 285, __pyx_L3_error) goto __pyx_L3_error; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_2run(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle, __pyx_v_run_type); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_2run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle, PyObject *__pyx_v_run_type) { PyArrayObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run", 0); __Pyx_INCREF(__pyx_v_image); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_INCREF(__pyx_v_shift_col); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_shift_row); __Pyx_XDECREF(__pyx_v_shift_col); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__43 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_scale_row, __pyx_n_s_scale_col, __pyx_n_s_angle, __pyx_n_s_run_type); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__43); __Pyx_GIVEREF(__pyx_tuple__43); /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 285, __pyx_L1_error) __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_3run, 0, __pyx_n_s_ShiftScaleRotate_run, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__28); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_2, __pyx_t_10) < 0) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_2, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 285, __pyx_L1_error)
286: """
287: Shift and scale an image using Catmull-Rom interpolation
288: :param image: The image to shift and magnify
289: :type image: np.ndarray
290: :param shift_row: The number of rows to shift the image
291: :type shift_row: int or float or np.ndarray
292: :param shift_col: The number of columns to shift the image
293: :type shift_col: int or float or np.ndarray
294: :param scale_row: The scale factor for the rows
295: :type scale_row: float
296: :param scale_col: The scale factor for the columns
297: :type scale_col: float
298: :param angle: Angle of rotation in radians. Positive is counter clockwise
299: :type angle: float
300: :return: The shifted, magnified and rotated image
301: """
+302: image = check_image(image)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_check_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_image}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_image, __pyx_t_1); __pyx_t_1 = 0;
+303: shift_row = value2array(shift_row, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_shift_row, __pyx_t_5}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_row, __pyx_t_1); __pyx_t_1 = 0;
+304: shift_col = value2array(shift_col, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_shift_col, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_col, __pyx_t_1); __pyx_t_1 = 0;
+305: return self._run(image, shift_row, shift_col, scale_row, scale_col, angle, run_type=run_type)
__Pyx_XDECREF((PyObject *)__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_run); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_scale_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_scale_col); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_angle); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_image); __Pyx_GIVEREF(__pyx_v_image); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_image)) __PYX_ERR(0, 305, __pyx_L1_error); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_GIVEREF(__pyx_v_shift_row); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_shift_row)) __PYX_ERR(0, 305, __pyx_L1_error); __Pyx_INCREF(__pyx_v_shift_col); __Pyx_GIVEREF(__pyx_v_shift_col); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_shift_col)) __PYX_ERR(0, 305, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_t_5)) __PYX_ERR(0, 305, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_run_type, __pyx_v_run_type) < 0) __PYX_ERR(0, 305, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 305, __pyx_L1_error) __pyx_r = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
306: # tag-end
307:
308: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate.benchmark
+309: def benchmark(self, image, shift_row, shift_col, float scale_row, float scale_col, float angle):
/* Python wrapper */ static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_5benchmark(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_4benchmark, "\n Benchmark the ShiftMagnifyScale run function in multiple run types\n :param image: The image to shift, scale and rotate\n :type image: np.ndarray\n :param shift_row: The number of rows to shift the image\n :type shift_row: int or float or np.ndarray\n :param shift_col: The number of columns to shift the image\n :type shift_col: int or float or np.ndarray\n :param scale_row: The scale factor for the rows\n :type scale_row: float\n :param scale_col: The scale factor for the columns\n :type scale_col: float\n :param angle: Angle of rotation in radians. Positive is counter clockwise\n :type angle: float\n :return: The benchmark results\n :rtype: [[run_time, run_type_name, return_value], ...]\n "); static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_5benchmark = {"benchmark", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_5benchmark, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_4benchmark}; static PyObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_5benchmark(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_image = 0; PyObject *__pyx_v_shift_row = 0; PyObject *__pyx_v_shift_col = 0; float __pyx_v_scale_row; float __pyx_v_scale_col; float __pyx_v_angle; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("benchmark (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 309, __pyx_L3_error) #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 1); __PYX_ERR(0, 309, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 2); __PYX_ERR(0, 309, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 3); __PYX_ERR(0, 309, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[4]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 4); __PYX_ERR(0, 309, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[5]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 5); __PYX_ERR(0, 309, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[6]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, 6); __PYX_ERR(0, 309, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "benchmark") < 0)) __PYX_ERR(0, 309, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 7)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6); } __pyx_v_self = values[0]; __pyx_v_image = values[1]; __pyx_v_shift_row = values[2]; __pyx_v_shift_col = values[3]; __pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) __pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) __pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("benchmark", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 309, __pyx_L3_error) goto __pyx_L3_error; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_4benchmark(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_4benchmark(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("benchmark", 0); __Pyx_INCREF(__pyx_v_image); __Pyx_INCREF(__pyx_v_shift_row); __Pyx_INCREF(__pyx_v_shift_col); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_shift_row); __Pyx_XDECREF(__pyx_v_shift_col); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__45 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_scale_row, __pyx_n_s_scale_col, __pyx_n_s_angle); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__45); __Pyx_GIVEREF(__pyx_tuple__45); /* … */ __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_5benchmark, 0, __pyx_n_s_ShiftScaleRotate_benchmark, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_10); PyList_Append(__pyx_t_5, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_benchmark, __pyx_t_10) < 0) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_benchmark, 309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 309, __pyx_L1_error)
310: """
311: Benchmark the ShiftMagnifyScale run function in multiple run types
312: :param image: The image to shift, scale and rotate
313: :type image: np.ndarray
314: :param shift_row: The number of rows to shift the image
315: :type shift_row: int or float or np.ndarray
316: :param shift_col: The number of columns to shift the image
317: :type shift_col: int or float or np.ndarray
318: :param scale_row: The scale factor for the rows
319: :type scale_row: float
320: :param scale_col: The scale factor for the columns
321: :type scale_col: float
322: :param angle: Angle of rotation in radians. Positive is counter clockwise
323: :type angle: float
324: :return: The benchmark results
325: :rtype: [[run_time, run_type_name, return_value], ...]
326: """
+327: image = check_image(image)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_check_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_image}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_image, __pyx_t_1); __pyx_t_1 = 0;
+328: shift_row = value2array(shift_row, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_shift_row, __pyx_t_5}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_row, __pyx_t_1); __pyx_t_1 = 0;
+329: shift_col = value2array(shift_col, image.shape[0])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_value2array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_shift_col, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF_SET(__pyx_v_shift_col, __pyx_t_1); __pyx_t_1 = 0;
+330: return super().benchmark(image, shift_row, shift_col, scale_row, scale_col, angle)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_2) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 330, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self)) __PYX_ERR(0, 330, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_benchmark); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_scale_row); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_scale_col); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_angle); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[7] = {__pyx_t_7, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_t_2, __pyx_t_5, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 6+__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
331: # tag-end
332:
333: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_opencl; replace("nearest_neighbor", "catmull_rom")
+334: def _run_opencl(self, image, shift_row, shift_col, float scale_row, float scale_col, float angle, dict device) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_7_run_opencl = {"_run_opencl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_7_run_opencl, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_image = 0;
PyObject *__pyx_v_shift_row = 0;
PyObject *__pyx_v_shift_col = 0;
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
PyObject *__pyx_v_device = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 334, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,&__pyx_n_s_device,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 1); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 2); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 3); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 4); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 5); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 6); __PYX_ERR(0, 334, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_device)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[7]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, 7); __PYX_ERR(0, 334, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_opencl") < 0)) __PYX_ERR(0, 334, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 8)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
}
__pyx_v_self = values[0];
__pyx_v_image = values[1];
__pyx_v_shift_row = values[2];
__pyx_v_shift_col = values[3];
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L3_error)
__pyx_v_device = ((PyObject*)values[7]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 8, 8, __pyx_nargs); __PYX_ERR(0, 334, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_device), (&PyDict_Type), 1, "device", 1))) __PYX_ERR(0, 334, __pyx_L1_error)
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_6_run_opencl(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle, __pyx_v_device);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_6_run_opencl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_image, PyObject *__pyx_v_shift_row, PyObject *__pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle, PyObject *__pyx_v_device) {
PyObject *__pyx_v_cl_ctx = NULL;
PyObject *__pyx_v_cl_queue = NULL;
PyObject *__pyx_v_code = NULL;
int __pyx_v_nFrames;
int __pyx_v_rowsM;
int __pyx_v_colsM;
PyObject *__pyx_v_image_in = NULL;
PyObject *__pyx_v_shift_col_in = NULL;
PyObject *__pyx_v_shift_row_in = NULL;
PyObject *__pyx_v_image_out = NULL;
PyObject *__pyx_v_prg = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_cl_ctx);
__Pyx_XDECREF(__pyx_v_cl_queue);
__Pyx_XDECREF(__pyx_v_code);
__Pyx_XDECREF(__pyx_v_image_in);
__Pyx_XDECREF(__pyx_v_shift_col_in);
__Pyx_XDECREF(__pyx_v_shift_row_in);
__Pyx_XDECREF(__pyx_v_image_out);
__Pyx_XDECREF(__pyx_v_prg);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__47 = PyTuple_Pack(19, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_scale_row, __pyx_n_s_scale_col, __pyx_n_s_angle, __pyx_n_s_device, __pyx_n_s_cl_ctx, __pyx_n_s_cl_queue, __pyx_n_s_code, __pyx_n_s_nFrames, __pyx_n_s_rowsM, __pyx_n_s_colsM, __pyx_n_s_image_in_2, __pyx_n_s_shift_col_in, __pyx_n_s_shift_row_in, __pyx_n_s_image_out, __pyx_n_s_prg); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 334, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__47);
__Pyx_GIVEREF(__pyx_tuple__47);
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 334, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
__pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_7_run_opencl, 0, __pyx_n_s_ShiftScaleRotate__run_opencl, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 334, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_opencl, __pyx_t_7) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_opencl, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 334, __pyx_L1_error)
335:
336: # QUEUE AND CONTEXT
+337: cl_ctx = cl.Context([device['device']])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Context); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 337, __pyx_L1_error) } __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_device); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(0, 337, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_cl_ctx = __pyx_t_1; __pyx_t_1 = 0;
+338: cl_queue = cl.CommandQueue(cl_ctx)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_cl); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_CommandQueue); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cl_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_cl_queue = __pyx_t_1; __pyx_t_1 = 0;
339:
+340: code = self._get_cl_code("_le_interpolation_catmull_rom_.cl", device['DP'])
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_get_cl_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 340, __pyx_L1_error) } __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_DP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_kp_u_le_interpolation_catmull_rom__c, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_code = __pyx_t_1; __pyx_t_1 = 0;
341:
+342: cdef int nFrames = image.shape[0]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_nFrames = __pyx_t_5;
+343: cdef int rowsM = image.shape[1]
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_rowsM = __pyx_t_5;
+344: cdef int colsM = image.shape[2]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_colsM = __pyx_t_5;
345:
+346: image_in = cl_array.to_device(cl_queue, image)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_to_device); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_cl_queue, __pyx_v_image}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_image_in = __pyx_t_4; __pyx_t_4 = 0;
+347: shift_col_in = cl_array.to_device(cl_queue, shift_col)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_to_device); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_cl_queue, __pyx_v_shift_col}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_v_shift_col_in = __pyx_t_4; __pyx_t_4 = 0;
+348: shift_row_in = cl_array.to_device(cl_queue, shift_row)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_to_device); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_cl_queue, __pyx_v_shift_row}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_shift_row_in = __pyx_t_4; __pyx_t_4 = 0;
+349: image_out = cl_array.zeros(cl_queue, (nFrames, rowsM, colsM), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rowsM); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_colsM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_cl_queue); __Pyx_GIVEREF(__pyx_v_cl_queue); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_cl_queue)) __PYX_ERR(0, 349, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_image_out = __pyx_t_4; __pyx_t_4 = 0;
350:
351: # Create the program
+352: prg = cl.Program(cl_ctx, code).build()
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Program); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_cl_ctx, __pyx_v_code}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_build); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_6, }; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_prg = __pyx_t_4; __pyx_t_4 = 0;
353:
354: # Run the kernel
+355: prg.shiftScaleRotate(
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_prg, __pyx_n_s_shiftScaleRotate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
356: cl_queue,
+357: image_out.shape,
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_image_out, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
358: None,
+359: image_in.data,
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_image_in, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+360: image_out.data,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_image_out, __pyx_n_s_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+361: shift_row_in.data,
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_shift_row_in, __pyx_n_s_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+362: shift_col_in.data,
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_shift_col_in, __pyx_n_s_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8);
+363: np.float32(scale_row),
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_scale_row); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_10}; __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; }
+364: np.float32(scale_col),
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_scale_col); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_13 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_10}; __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; }
+365: np.float32(angle)
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_angle); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_14 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_10}; __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; } __pyx_t_13 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[11] = {__pyx_t_13, __pyx_v_cl_queue, __pyx_t_6, Py_None, __pyx_t_2, __pyx_t_1, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_11, __pyx_t_12}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 10+__pyx_t_5); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
366: )
367:
368: # Wait for queue to finish
+369: cl_queue.finish()
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_cl_queue, __pyx_n_s_finish); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_12, }; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
370:
+371: return np.asarray(image_out.get(),dtype=np.float32)
__Pyx_XDECREF((PyObject *)__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_image_out, __pyx_n_s_get); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_11, }; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_float32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 371, __pyx_L1_error) __pyx_r = ((PyArrayObject *)__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L0;
372:
373: # tag-end
374:
375: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_unthreaded
+376: def _run_unthreaded(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float scale_row, float scale_col, float angle) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_9_run_unthreaded = {"_run_unthreaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_9_run_unthreaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 376, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 1); __PYX_ERR(0, 376, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 2); __PYX_ERR(0, 376, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 3); __PYX_ERR(0, 376, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 4); __PYX_ERR(0, 376, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 5); __PYX_ERR(0, 376, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, 6); __PYX_ERR(0, 376, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_unthreaded") < 0)) __PYX_ERR(0, 376, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 376, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 376, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 376, __pyx_L3_error)
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 376, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_8_run_unthreaded(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_8_run_unthreaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
float __pyx_v_center_col;
float __pyx_v_center_row;
float __pyx_v_a;
float __pyx_v_b;
float __pyx_v_c;
float __pyx_v_d;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__49 = PyTuple_Pack(24, __pyx_n_s_self, __pyx_n_s_image, __pyx_n_s_shift_row, __pyx_n_s_shift_col, __pyx_n_s_scale_row, __pyx_n_s_scale_col, __pyx_n_s_angle, __pyx_n_s_nFrames, __pyx_n_s_rows, __pyx_n_s_cols, __pyx_n_s_image_out, __pyx_n_s_image_out_2, __pyx_n_s_image_in, __pyx_n_s_f, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_row, __pyx_n_s_col, __pyx_n_s_center_col, __pyx_n_s_center_row, __pyx_n_s_a, __pyx_n_s_b, __pyx_n_s_c, __pyx_n_s_d); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__49);
__Pyx_GIVEREF(__pyx_tuple__49);
/* … */
__pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 376, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_9_run_unthreaded, 0, __pyx_n_s_ShiftScaleRotate__run_unthreaded, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_unthreaded, __pyx_t_10) < 0) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_unthreaded, 376, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 376, __pyx_L1_error)
+377: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+378: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+379: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
380:
+381: image_out = np.zeros((nFrames, rows, cols), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cols); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 381, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+382: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 382, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+383: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
384:
385: cdef int f, i, j
386: cdef float row, col
387:
+388: cdef float center_col = cols/2
__pyx_v_center_col = (((long)__pyx_v_cols) / 2);
+389: cdef float center_row = rows/2
__pyx_v_center_row = (((long)__pyx_v_rows) / 2);
390:
391: # cdef float center_rowM = (rows * scale_row) / 2
392: # cdef float center_colM = (cols * scale_col) / 2
393:
394: cdef float a,b,c,d
+395: a = cos(angle)/scale_col
__pyx_v_a = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_col));
+396: b = -sin(angle)/scale_col
__pyx_v_b = ((-sin(__pyx_v_angle)) / ((double)__pyx_v_scale_col));
+397: c = sin(angle)/scale_row
__pyx_v_c = (sin(__pyx_v_angle) / ((double)__pyx_v_scale_row));
+398: d = cos(angle)/scale_row
__pyx_v_d = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_row));
399:
+400: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+401: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+402: for j in range(cols):
__pyx_t_10 = __pyx_v_cols;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+403: for i in range(rows):
__pyx_t_13 = __pyx_v_rows;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+404: col = (a*(j-center_col-shift_col[f])+b*(i-center_row-shift_row[f])) + center_col
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = __pyx_v_f;
__pyx_v_col = (((__pyx_v_a * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_16 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_b * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_17 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_col);
+405: row = (c*(j-center_col-shift_col[f])+d*(i-center_row-shift_row[f])) + center_row
__pyx_t_17 = __pyx_v_f;
__pyx_t_16 = __pyx_v_f;
__pyx_v_row = (((__pyx_v_c * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_17 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_d * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_16 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_row);
+406: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_16 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
407:
+408: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
409: # tag-end
410:
411: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_unthreaded; replace("_run_unthreaded", "_run_threaded"); replace("range(colsM)", "prange(colsM)")
+412: def _run_threaded(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float scale_row, float scale_col, float angle) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_11_run_threaded = {"_run_threaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_11_run_threaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 412, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 1); __PYX_ERR(0, 412, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 2); __PYX_ERR(0, 412, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 3); __PYX_ERR(0, 412, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 4); __PYX_ERR(0, 412, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 5); __PYX_ERR(0, 412, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, 6); __PYX_ERR(0, 412, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded") < 0)) __PYX_ERR(0, 412, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 412, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 412, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 412, __pyx_L3_error)
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 412, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_10_run_threaded(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_10_run_threaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
float __pyx_v_center_col;
float __pyx_v_center_row;
float __pyx_v_a;
float __pyx_v_b;
float __pyx_v_c;
float __pyx_v_d;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 412, __pyx_L1_error)
__pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_11_run_threaded, 0, __pyx_n_s_ShiftScaleRotate__run_threaded, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_threaded, __pyx_t_7) < 0) __PYX_ERR(0, 412, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded, 412, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 412, __pyx_L1_error)
+413: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+414: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+415: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
416:
+417: image_out = np.zeros((nFrames, rows, cols), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cols); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 417, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 417, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+418: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 418, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+419: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
420:
421: cdef int f, i, j
422: cdef float row, col
423:
+424: cdef float center_col = cols/2
__pyx_v_center_col = (((long)__pyx_v_cols) / 2);
+425: cdef float center_row = rows/2
__pyx_v_center_row = (((long)__pyx_v_rows) / 2);
426:
427: # cdef float center_rowM = (rows * scale_row) / 2
428: # cdef float center_colM = (cols * scale_col) / 2
429:
430: cdef float a,b,c,d
+431: a = cos(angle)/scale_col
__pyx_v_a = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_col));
+432: b = -sin(angle)/scale_col
__pyx_v_b = ((-sin(__pyx_v_angle)) / ((double)__pyx_v_scale_col));
+433: c = sin(angle)/scale_row
__pyx_v_c = (sin(__pyx_v_angle) / ((double)__pyx_v_scale_row));
+434: d = cos(angle)/scale_row
__pyx_v_d = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_row));
435:
+436: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+437: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+438: for j in range(cols):
__pyx_t_10 = __pyx_v_cols;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+439: for i in range(rows):
__pyx_t_13 = __pyx_v_rows;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+440: col = (a*(j-center_col-shift_col[f])+b*(i-center_row-shift_row[f])) + center_col
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = __pyx_v_f;
__pyx_v_col = (((__pyx_v_a * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_16 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_b * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_17 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_col);
+441: row = (c*(j-center_col-shift_col[f])+d*(i-center_row-shift_row[f])) + center_row
__pyx_t_17 = __pyx_v_f;
__pyx_t_16 = __pyx_v_f;
__pyx_v_row = (((__pyx_v_c * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_17 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_d * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_16 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_row);
+442: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_16 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
443:
+444: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
445: # tag-end
446:
447: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_unthreaded; replace("_run_unthreaded", "_run_threaded_static"); replace("range(colsM)", 'prange(colsM, schedule="static")')
+448: def _run_threaded_static(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float scale_row, float scale_col, float angle) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_13_run_threaded_static = {"_run_threaded_static", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_13_run_threaded_static, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 448, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 1); __PYX_ERR(0, 448, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 2); __PYX_ERR(0, 448, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 3); __PYX_ERR(0, 448, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 4); __PYX_ERR(0, 448, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 5); __PYX_ERR(0, 448, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, 6); __PYX_ERR(0, 448, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_static") < 0)) __PYX_ERR(0, 448, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 448, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 448, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 448, __pyx_L3_error)
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 448, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_12_run_threaded_static(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_12_run_threaded_static(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
float __pyx_v_center_col;
float __pyx_v_center_row;
float __pyx_v_a;
float __pyx_v_b;
float __pyx_v_c;
float __pyx_v_d;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 448, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 448, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_13_run_threaded_static, 0, __pyx_n_s_ShiftScaleRotate__run_threaded_s, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 448, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_threaded_static, __pyx_t_10) < 0) __PYX_ERR(0, 448, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* … */
__pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded_static, 448, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 448, __pyx_L1_error)
+449: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+450: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+451: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
452:
+453: image_out = np.zeros((nFrames, rows, cols), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cols); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 453, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 453, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+454: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 454, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+455: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
456:
457: cdef int f, i, j
458: cdef float row, col
459:
+460: cdef float center_col = cols/2
__pyx_v_center_col = (((long)__pyx_v_cols) / 2);
+461: cdef float center_row = rows/2
__pyx_v_center_row = (((long)__pyx_v_rows) / 2);
462:
463: # cdef float center_rowM = (rows * scale_row) / 2
464: # cdef float center_colM = (cols * scale_col) / 2
465:
466: cdef float a,b,c,d
+467: a = cos(angle)/scale_col
__pyx_v_a = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_col));
+468: b = -sin(angle)/scale_col
__pyx_v_b = ((-sin(__pyx_v_angle)) / ((double)__pyx_v_scale_col));
+469: c = sin(angle)/scale_row
__pyx_v_c = (sin(__pyx_v_angle) / ((double)__pyx_v_scale_row));
+470: d = cos(angle)/scale_row
__pyx_v_d = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_row));
471:
+472: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+473: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+474: for j in range(cols):
__pyx_t_10 = __pyx_v_cols;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+475: for i in range(rows):
__pyx_t_13 = __pyx_v_rows;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+476: col = (a*(j-center_col-shift_col[f])+b*(i-center_row-shift_row[f])) + center_col
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = __pyx_v_f;
__pyx_v_col = (((__pyx_v_a * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_16 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_b * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_17 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_col);
+477: row = (c*(j-center_col-shift_col[f])+d*(i-center_row-shift_row[f])) + center_row
__pyx_t_17 = __pyx_v_f;
__pyx_t_16 = __pyx_v_f;
__pyx_v_row = (((__pyx_v_c * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_17 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_d * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_16 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_row);
+478: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_16 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
479:
+480: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 480, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
481: # tag-end
482:
483: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_unthreaded; replace("_run_unthreaded", "_run_threaded_dynamic"); replace("range(colsM)", 'prange(colsM, schedule="dynamic")')
+484: def _run_threaded_dynamic(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float scale_row, float scale_col, float angle) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_15_run_threaded_dynamic = {"_run_threaded_dynamic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_15_run_threaded_dynamic, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 484, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 1); __PYX_ERR(0, 484, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 2); __PYX_ERR(0, 484, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 3); __PYX_ERR(0, 484, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 4); __PYX_ERR(0, 484, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 5); __PYX_ERR(0, 484, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, 6); __PYX_ERR(0, 484, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_dynamic") < 0)) __PYX_ERR(0, 484, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 484, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 484, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 484, __pyx_L3_error)
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 484, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_14_run_threaded_dynamic(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_14_run_threaded_dynamic(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
float __pyx_v_center_col;
float __pyx_v_center_row;
float __pyx_v_a;
float __pyx_v_b;
float __pyx_v_c;
float __pyx_v_d;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 484, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
__pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_15_run_threaded_dynamic, 0, __pyx_n_s_ShiftScaleRotate__run_threaded_d, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 484, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_threaded_dynamic, __pyx_t_7) < 0) __PYX_ERR(0, 484, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 24, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_interpola, __pyx_n_s_run_threaded_dynamic, 484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 484, __pyx_L1_error)
+485: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+486: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+487: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
488:
+489: image_out = np.zeros((nFrames, rows, cols), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cols); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 489, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 489, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+490: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 490, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+491: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
492:
493: cdef int f, i, j
494: cdef float row, col
495:
+496: cdef float center_col = cols/2
__pyx_v_center_col = (((long)__pyx_v_cols) / 2);
+497: cdef float center_row = rows/2
__pyx_v_center_row = (((long)__pyx_v_rows) / 2);
498:
499: # cdef float center_rowM = (rows * scale_row) / 2
500: # cdef float center_colM = (cols * scale_col) / 2
501:
502: cdef float a,b,c,d
+503: a = cos(angle)/scale_col
__pyx_v_a = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_col));
+504: b = -sin(angle)/scale_col
__pyx_v_b = ((-sin(__pyx_v_angle)) / ((double)__pyx_v_scale_col));
+505: c = sin(angle)/scale_row
__pyx_v_c = (sin(__pyx_v_angle) / ((double)__pyx_v_scale_row));
+506: d = cos(angle)/scale_row
__pyx_v_d = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_row));
507:
+508: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+509: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+510: for j in range(cols):
__pyx_t_10 = __pyx_v_cols;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+511: for i in range(rows):
__pyx_t_13 = __pyx_v_rows;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+512: col = (a*(j-center_col-shift_col[f])+b*(i-center_row-shift_row[f])) + center_col
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = __pyx_v_f;
__pyx_v_col = (((__pyx_v_a * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_16 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_b * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_17 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_col);
+513: row = (c*(j-center_col-shift_col[f])+d*(i-center_row-shift_row[f])) + center_row
__pyx_t_17 = __pyx_v_f;
__pyx_t_16 = __pyx_v_f;
__pyx_v_row = (((__pyx_v_c * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_17 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_d * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_16 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_row);
+514: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_16 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
515:
+516: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
517: # tag-end
518:
519: # tag-copy: _le_interpolation_nearest_neighbor.ShiftScaleRotate._run_unthreaded; replace("_run_unthreaded", "_run_threaded_guided"); replace("range(colsM)", 'prange(colsM, schedule="guided")')
+520: def _run_threaded_guided(self, float[:,:,:] image, float[:] shift_row, float[:] shift_col, float scale_row, float scale_col, float angle) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_17_run_threaded_guided = {"_run_threaded_guided", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_17_run_threaded_guided, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
__Pyx_memviewslice __pyx_v_image = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_row = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_shift_col = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_scale_row;
float __pyx_v_scale_col;
float __pyx_v_angle;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 520, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_image,&__pyx_n_s_shift_row,&__pyx_n_s_shift_col,&__pyx_n_s_scale_row,&__pyx_n_s_scale_col,&__pyx_n_s_angle,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_image)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 1); __PYX_ERR(0, 520, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 2); __PYX_ERR(0, 520, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shift_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 3); __PYX_ERR(0, 520, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_row)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 4); __PYX_ERR(0, 520, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale_col)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 5); __PYX_ERR(0, 520, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_angle)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, 6); __PYX_ERR(0, 520, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_guided") < 0)) __PYX_ERR(0, 520, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_image = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_image.memview)) __PYX_ERR(0, 520, __pyx_L3_error)
__pyx_v_shift_row = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_row.memview)) __PYX_ERR(0, 520, __pyx_L3_error)
__pyx_v_shift_col = __Pyx_PyObject_to_MemoryviewSlice_ds_float(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_shift_col.memview)) __PYX_ERR(0, 520, __pyx_L3_error)
__pyx_v_scale_row = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_scale_row == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
__pyx_v_scale_col = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_scale_col == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
__pyx_v_angle = __pyx_PyFloat_AsFloat(values[6]); if (unlikely((__pyx_v_angle == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 520, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_16_run_threaded_guided(__pyx_self, __pyx_v_self, __pyx_v_image, __pyx_v_shift_row, __pyx_v_shift_col, __pyx_v_scale_row, __pyx_v_scale_col, __pyx_v_angle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
__PYX_XCLEAR_MEMVIEW(&__pyx_v_image, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_row, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v_shift_col, 1);
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_16_run_threaded_guided(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, __Pyx_memviewslice __pyx_v_image, __Pyx_memviewslice __pyx_v_shift_row, __Pyx_memviewslice __pyx_v_shift_col, float __pyx_v_scale_row, float __pyx_v_scale_col, float __pyx_v_angle) {
int __pyx_v_nFrames;
int __pyx_v_rows;
int __pyx_v_cols;
PyObject *__pyx_v_image_out = NULL;
__Pyx_memviewslice __pyx_v__image_out = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v__image_in = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_f;
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
float __pyx_v_center_col;
float __pyx_v_center_row;
float __pyx_v_a;
float __pyx_v_b;
float __pyx_v_c;
float __pyx_v_d;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_interpolation_catmull_rom.ShiftScaleRotate._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_image_out);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_out, 1);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__image_in, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 520, __pyx_L1_error)
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_29_le_interpolation_catmull_rom_16ShiftScaleRotate_17_run_threaded_guided, 0, __pyx_n_s_ShiftScaleRotate__run_threaded_g, NULL, __pyx_n_s_nanopyx_liquid__le_interpolation, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_n_s_run_threaded_guided, __pyx_t_10) < 0) __PYX_ERR(0, 520, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+521: cdef int nFrames = image.shape[0]
__pyx_v_nFrames = (__pyx_v_image.shape[0]);
+522: cdef int rows = image.shape[1]
__pyx_v_rows = (__pyx_v_image.shape[1]);
+523: cdef int cols = image.shape[2]
__pyx_v_cols = (__pyx_v_image.shape[2]);
524:
+525: image_out = np.zeros((nFrames, rows, cols), dtype=np.float32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nFrames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_cols); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5)) __PYX_ERR(0, 525, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_image_out = __pyx_t_1; __pyx_t_1 = 0;
+526: cdef float[:,:,:] _image_out = image_out
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_float(__pyx_v_image_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 526, __pyx_L1_error) __pyx_v__image_out = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+527: cdef float[:,:,:] _image_in = image
__PYX_INC_MEMVIEW(&__pyx_v_image, 1); __pyx_v__image_in = __pyx_v_image;
528:
529: cdef int f, i, j
530: cdef float row, col
531:
+532: cdef float center_col = cols/2
__pyx_v_center_col = (((long)__pyx_v_cols) / 2);
+533: cdef float center_row = rows/2
__pyx_v_center_row = (((long)__pyx_v_rows) / 2);
534:
535: # cdef float center_rowM = (rows * scale_row) / 2
536: # cdef float center_colM = (cols * scale_col) / 2
537:
538: cdef float a,b,c,d
+539: a = cos(angle)/scale_col
__pyx_v_a = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_col));
+540: b = -sin(angle)/scale_col
__pyx_v_b = ((-sin(__pyx_v_angle)) / ((double)__pyx_v_scale_col));
+541: c = sin(angle)/scale_row
__pyx_v_c = (sin(__pyx_v_angle) / ((double)__pyx_v_scale_row));
+542: d = cos(angle)/scale_row
__pyx_v_d = (cos(__pyx_v_angle) / ((double)__pyx_v_scale_row));
543:
+544: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+545: for f in range(nFrames):
__pyx_t_7 = __pyx_v_nFrames;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_f = __pyx_t_9;
+546: for j in range(cols):
__pyx_t_10 = __pyx_v_cols;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_j = __pyx_t_12;
+547: for i in range(rows):
__pyx_t_13 = __pyx_v_rows;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+548: col = (a*(j-center_col-shift_col[f])+b*(i-center_row-shift_row[f])) + center_col
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = __pyx_v_f;
__pyx_v_col = (((__pyx_v_a * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_16 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_b * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_17 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_col);
+549: row = (c*(j-center_col-shift_col[f])+d*(i-center_row-shift_row[f])) + center_row
__pyx_t_17 = __pyx_v_f;
__pyx_t_16 = __pyx_v_f;
__pyx_v_row = (((__pyx_v_c * ((__pyx_v_j - __pyx_v_center_col) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_col.data + __pyx_t_17 * __pyx_v_shift_col.strides[0]) ))))) + (__pyx_v_d * ((__pyx_v_i - __pyx_v_center_row) - (*((float *) ( /* dim=0 */ (__pyx_v_shift_row.data + __pyx_t_16 * __pyx_v_shift_row.strides[0]) )))))) + __pyx_v_center_row);
+550: _image_out[f, i, j] = _c_interpolate(&_image_in[f, 0, 0], row, col, rows, cols)
__pyx_t_16 = __pyx_v_f;
__pyx_t_17 = 0;
__pyx_t_18 = 0;
__pyx_t_19 = __pyx_v_f;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_j;
*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_out.data + __pyx_t_19 * __pyx_v__image_out.strides[0]) ) + __pyx_t_20 * __pyx_v__image_out.strides[1]) ) + __pyx_t_21 * __pyx_v__image_out.strides[2]) )) = _c_interpolate((&(*((float *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v__image_in.data + __pyx_t_16 * __pyx_v__image_in.strides[0]) ) + __pyx_t_17 * __pyx_v__image_in.strides[1]) ) + __pyx_t_18 * __pyx_v__image_in.strides[2]) )))), __pyx_v_row, __pyx_v_col, __pyx_v_rows, __pyx_v_cols);
}
}
}
}
551:
+552: return image_out
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_image_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_image_out, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_INCREF(__pyx_v_image_out); __pyx_r = ((PyArrayObject *)__pyx_v_image_out); goto __pyx_L0;
553: # tag-end